<?php

/*
** COMITATO PROVINCIALE DI CATANIA - CROCE ROSSA ITALIANA
*/

class Gruppo {
	public
		$id, $nome, $tipo;
	private
		$db, $esistente;

	public function __construct( $id = NULL ) {
		global $db;
		$this->db = $db;
		if ( $id ) {
			$esistente = true;
			$q = "SELECT nome, tipo
				FROM gruppi
				WHERE id = '$id'";
			$q = $this->db->riga($q);
			$this->nome = $q[0];
			$this->tipo = (int) $q[1];
			$this->id = $id;
		} else {
			$this->esistente = false;
			$this->nome = '(Nome gruppo)';
			$this->tipo = 1;
			$this->id = $this->generaId();
		}
	}

	private function generaId() {
		return rand(10000, 99999);
	}

	public function __toString() {
		return $this->id;
	}

	public function salva() {
		$id = $this->id;
		$nome = $this->db->escape($this->nome);
		$tipo = (int) $this->tipo;
		if ( $this->esistente ) {
			// UPDATE
			$q = "UPDATE gruppi SET
				nome = '$nome' AND tipo = $tipo
				WHERE id = '$id'";
		} else {
			$q = "INSERT INTO gruppi
				(id, nome, tipo)
				VALUES
				('$id', '$nome', $tipo)";
		}
		return $this->db->query($q);
	}
	
	
	/*
	** bool presente ( Persona membro )
	** - Controlla se la persona è nel gruppo
	*/
	public function presente ( Persona $membro ) {
		$gruppi = comeArray( $membro->gruppo );
		return in_array ( $this->id, $gruppi );
	}

	/*
	** void aggiungi ( Persona nuovoMembro )
	** - Aggiunge nuovoMembro al gruppo, se non già presente.
	*/
	public function aggiungi ( Persona $nuovoMembro ) {
		if ( $this->presente($nuovoMembro) ) { return; }
		$gruppi = comeArray( $nuovoMembro->gruppo );
		$gruppi[] = $this->id;
		$nuovoMembro->gruppo = $gruppi;
	}

	/*
	** void rimuovi ( Persona membro )
	** - Rimuove membro dal gruppo, se già presente
	*/
	public function rimuovi ( Persona $membro ) {
		if ( !$this->presente($membro) ) { return; }
		$gruppi = comeArray( $membro->gruppo );
		$daRimuovere = array( $this->id );
		$gruppi = array_diff ( $gruppi, $daRimuovere );
		$membro->gruppo = $gruppi;
	}
}

